import axios from "axios";
import store from '@/store'
import { Message } from "element-ui";
import router from '@/router'

//创建axios实例
const service=axios.create({
  baseURL:process.env.VUE_APP_BASE_API,//基础地址
  timeout:70000//超时时间
})

//请求拦截器设置  
//成功执行第一个 失败执行第二个
service.interceptors.request.use((config)=>{
  //统一注入token
  if(store.getters.token){
    config.headers.token=store.getters.token
  }
  return config
},(error)=>{
  return Promise.reject(error)
})

//响应拦截器设置  成功执行1 失败执行2
service.interceptors.response.use((response)=>{
  //获取响应数据
  const {code,msg,data}=response.data
  if(code===1){
    return response
  }else{
    Message({type:"error",message:msg})
    return Promise.reject(new Error(msg))
  }
},async(error)=>{
  if(error.response.status===401){
    Message({type:"warning",message:'token超时了,重新登录'})
    //token失效的情况 
    //1.移除token和用户信息
   await store.dispatch('user/logout')
    //跳转到登录页
    router.push('/login')
    return Promise.reject(new Error(error))
  }
  Message({type:"error",message:error.message})
    return Promise.reject(new Error(error))
})

export default service